class Solution {
    public int longestIdealString(String s, int k) {
        int m1 = s.length();
        HashMap<Character,Integer>map2 = new HashMap<>();
        int []dp1 = new int [m1];
        dp1[0] =1 ;
        int answer = 0;
        map2.put(s.charAt(0),0); 
        for(int i =1;i<s.length();i++)
        {
            char ch = s.charAt(i);
            int maximum = 0;
            for(int j =k;j>=0;j--)
            {
                if(map2.containsKey((char)(ch-j)))
                {
                    maximum = Math.max(dp1[map2.get((char)(ch-j))] ,maximum);
                }
                if(map2.containsKey((char)(ch+j)))
                {
                    maximum = Math.max(dp1[map2.get((char)(ch+j))] ,maximum);
                }
            }
            map2.put(ch,i);
            dp1[i] = maximum+1;
            answer = Math.max(answer,dp1[i]);
        }
        answer = Math.max(answer,dp1[m1-1]);
        return answer;
    }
    
}
